package com.siashan.toolkit.crypt.symmetric;

/**
 * DES加密算法实现<br>
 * DES全称为Data Encryption Standard，即数据加密标准，是一种使用密钥加密的块算法<br>
 * Java中默认实现为：DES/CBC/PKCS5Padding
 * 
 * @author siashan
 * @since 1.0.7
 */
public class DES extends SymmetricCrypt {
	private static final long serialVersionUID = 1L;

	// ------------------------------------------------------------------------- Constrctor start
	/**
	 * 构造，默认DES/CBC/PKCS5Padding，使用随机密钥
	 */
	public DES() {

	}

	public DES(Mode mode,Padding padding){
		super(SymmetricAlgorithm.DES,mode,padding);
	}

	@Override
	public SymmetricAlgorithm getAlgorithm() {
		return SymmetricAlgorithm.DES;
	}
	// ------------------------------------------------------------------------- Constrctor end

	/**
	 * 构建加密算法类
	 * <p>默认实现：DES/CBC/PKCS5Padding </p>
	 *
	 * @return 加密算法类
	 */
	public static  SymmetricCrypt build(){
		return build(Mode.CBC,Padding.PKCS5Padding);
	}

	/**
	 * 构建加密算法类
	 *
	 * @param mode      密码模式
	 * @param padding   填充模式
	 * @return  加密算法类
	 */
	public static  DES build(Mode mode,Padding padding){
		return new DES(mode,padding);
	}
}
